package com.gf.user.service;

import com.gf.base.type.LicenseState;
import com.gf.base.type.Role;
import com.gf.common.bean.Page;
import com.gf.user.model.User;

public interface UserBaseService {

	/**
	 * 注册
	 * 
	 * @param nickname
	 * @param email
	 * @param password
	 * @param idNumber
	 * @param realName
	 * @param sex
	 * @param role
	 * @return
	 */
	public long register(String nickname, String email, String password,
			String idNumber, String realName, String sex, String role,
			String major, String safeFactor);

	/**
	 * 以邮箱登入
	 * 
	 * @param email
	 * @param password
	 * @return
	 */
	public User loginByEmail(String email, String password);

	/**
	 * 以身份证号登入
	 * 
	 * @param idNumber
	 * @param password
	 * @return
	 */
	public User loginByID(String idNumber, String password);

	/**
	 * 用户忘记密码,验证通过后返回重置新密码的ticket<br>
	 * 然后发送到用户邮箱<br>
	 * 就是将激活URL发送到用户注册的邮箱<BR>
	 * 并将相应的TICKET存入到SESSION
	 * 
	 * @param email
	 * @param idNumber
	 * @return
	 */
	public String findPasswdReturnWithUrl(String email, String idNumber);

	/**
	 * 修改密码
	 * 
	 * @param id
	 * @param newPasswd
	 */
	public void modifyPasswd(long id, String newPasswd);

	/**
	 * 用户注册后，生成相应的含有UUID的URL<br>
	 * 用户到邮箱中激活注册帐号<br>
	 * 并将相应的TICKET存入到SESSION
	 * 
	 * @return 失败 返回"" 成功返回url
	 */
	public String activeUserReturnWithUrl(String email, String idNumber);

	/**
	 * 激活注册用户
	 * 
	 * @param id
	 */
	public void activeUser(long id);

	/**
	 * 从数据库中删除用户
	 * 
	 * @param id
	 */
	public void deleteUser(long id);

	/**
	 * 通过邮箱查看该用户是否存在
	 * 
	 * @param email
	 * @return
	 */
	public User isUserExist(String email);

	/**
	 * 得到用户
	 * 
	 * @param id
	 * @return
	 */
	public User getUserById(long id);

	/**
	 * 医生通过审核
	 * 
	 * @param userId
	 */
	public boolean passCheckingOfDoctor(long id, LicenseState licenseState);

	/**
	 * 检查昵称是否存在
	 * 
	 * @param nickname
	 * @return
	 */
	public boolean isNicknameExist(String nickname);

	/**
	 * 得到所有普通用户
	 * 
	 * @return
	 */
	public Page getAllBaseUsers(int currentPage, int pageSize, Role role);

	/**
	 * 
	 * @param currentPage
	 * @param pageSize
	 * @return
	 */
	public Page getAllUsers(int currentPage, int pageSize);

	/**
	 * 得到"关于我们"的最新内容
	 * 
	 * @return
	 */
	public String getAboutContent();
	
	/**
	 * 得到最新注册的用户<br>
	 * @return
	 */
	public User getLatestUser();
}
